home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright 1991, 1992, 1993, 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- /*
- * ifilbuf -
- *
- * Paul Haeberli - 1984
- *
- */
- #include "image.h"
-
- ifilbuf(image)
- register IMAGE *image;
- {
- int size;
-
- if ((image->flags&_IOREAD) == 0)
- return(EOF);
- if (image->base==NULL) {
- size = IBUFSIZE(image->xsize);
- if ((image->base = ibufalloc(image)) == NULL) {
- i_errhdlr("can't alloc image buffer\n");
- return EOF;
- }
- }
- image->cnt = getrow(image,image->base,image->y,image->z);
- image->ptr = image->base;
- if (--image->cnt < 0) {
- if (image->cnt == -1) {
- image->flags |= _IOEOF;
- if (image->flags & _IORW)
- image->flags &= ~_IOREAD;
- } else
- image->flags |= _IOERR;
- image->cnt = 0;
- return -1;
- }
- if(++image->y >= image->ysize) {
- image->y = 0;
- if(++image->z >= image->zsize) {
- image->z = image->zsize-1;
- image->flags |= _IOEOF;
- return -1;
- }
- }
- return *image->ptr++ & 0xffff;
- }
-